Computing devices are initialized by firmware included within the device and this firmware provides a range of software services which facilitate the boot of the operating system (OS) as well as providing a smaller subset of these services that continue to be available after the operating system has booted. Firmware is software that has been written into Read-Only Memory (ROM) modules including, but not limited to, ROM, PROM, EPROM, EEPROM, and Flash memory (collectively referred to hereafter as “ROM”). Among other services, the firmware is responsible for operation of the computing device until a boot process can be run which loads an operating system for the computing device into memory. Once loaded, the operating system is in charge of normal operation of the computing device although the provision of certain services after loading of the operating system may require a transition of control from the operating system back to the firmware for security and other reasons.
A computing device may contain one or more elements known as Central Processing Units (CPUs). These CPUs may have a normal operating mode and a second operating mode called System Management Mode (SMM). When the CPU is in normal operating mode it can access all elements of the computer except certain memory regions exclusively dedicated to SMM. In contrast, when the CPU is operating in SMM it is able to access all elements of the computing device including the memory locations allocated for SMM. The CPU may be directed to transition from normal operating mode to SMM by a number of triggers called System Management Interrupt (SMI) events. The exact triggers available differ somewhat among system designs but the result of an SMI being triggered is that execution in main memory is immediately suspended and execution begins at a specific location in System Management memory (called SMRAM).
In addition to CPUs, computing devices include a number of other hardware components. These other hardware components may include a platform bus such as a System Management Bus (SMBus) and one or more network interface controllers (NICs). The SMBus is a two-wire bus that provides lightweight communication with low-bandwidth devices on a motherboard. The devices can provide information over the SMBus that includes identifying information, their save state for a suspend event, and different types of errors, and can also accept control parameters and return device status. Exemplary devices that can communicate over an SMBus include power-related chips, temperature sensors, fan or voltage sensors, and clock chips, etc. NICs are used by computing devices for network communication. NICs may be built onto the motherboard or may be provided via an expansion card plugged into a bus on the computing device. NICs implement the electronic circuitry required to communicate using a specific physical layer and data link layer standard and enable network communications through routable protocols, such as the Internet Protocol (IP). Incoming packets received via a NIC after an operating system has loaded may be provided to an operating system driver for handling. Among other attributes, the presence of a NIC in a computing device may also enable communication between the computing device and a remotely located user or process looking to remotely manage the computing device.
Another hardware component that may be present in a computing device is a Baseboard Management Controller. A Baseboard Management Controller (BMC) is a general name for a wide variety of microcontrollers specifically designed for platform management. BMC controllers often implement the Intelligent Platform Management Interface (IPMI), Desktop and Mobile Architecture for System Hardware (DASH) and/or Alert Standard Format (ASF) platform management specifications, along with proprietary standards. BMCs often maintain power even when the rest of the system is unpowered. The BMC can act as an intermediary between the remote manager (using a network interface), the system firmware, the platform sensors and, in some cases, the operating system. In some cases, the BMC itself has a NIC integrated. In other cases, it uses a link with a special NIC (such as the Intel® 82571) via SMBus or a proprietary interface. The BMC is not dependent on the system firmware or the operating system. The BMC requires either a dedicated network interface controller (NIC) or some means to share a NIC for the purposes of remote management.